Хостинг → Разворачиваем приложение Ruby On Rails на примере Redmine
Rvm, Bundler, Capistrano — все эти инструменты сильно облегчают жизнь разработчику и администратору проекта, но могут изрядно запутать. В этой статье мы наглядно покажем процесс деплоя распространенной системы управления проектами Redmine.
Создаем новый Ruby On Rails проект
- Выбираем тип проекта «Ruby on Rails»
- Задаем имя будущему проекту
- Создаем. Панели нужно две-три минуты, чтобы создать всё необходимое для работы проекта, после чего можно продолжать. Около 15 минут необходимо, чтобы проект начал отзываться по присвоенному ему DNS-имени.
Обратите внимание на созданную базу данных, она нам еще пригодится.
Загружаем дистрибутив
Новые версии Redmine замечательно работают с Ruby 1.9.3, поэтому, настройки проекта по умолчанию нам подойдут. Мы будем ставить последнюю на момент написания статьи стабильную версию Redmine 2.0.3.
Узнаём параметры входа на сервер по ssh
Начинаем работать с терминалом. Заходим на сервер
Переходим с свежесозданный каталог проекта
$ cd projects/redmine
Удаляем автоматически созданные файлы
$ rm -rf ./current/*
Загружаем архив с исходниками Redmine
$ wget http://rubyforge.org/frs/download.php/76259/redmine-2.0.3.tar.gz
Распаковываем архив
$ tar xvf redmine-2.0.3.tar.gz
Переписываем симлинк current на распакованный Redmine
$ rm current $ ln -s redmine-2.0.3 current
Подготавливаем окружение
На этом этапе можно открыть в соседней вкладке руководство по установке Redmine и сверяться с ним, если что-то пойдет не так. Также рекомендуем прочитать нашу статью об особенностях работы с rvm.
Переходим в каталог с исходниками
$ cd current
Подготавливаем бандл. Хотя Gemfile уже идет в поставке Redmine, хостинг Locum использует сервер приложений Unicorn для запуска проектов, поэтому в Gemfile необходимо внести изменения
$ echo 'gem "unicorn"' >> Gemfile
Теперь можно создать бандл
$ rvm use 1.9.3 do bundle install --path=~/projects/redmine/shared/gems --without development test
Этот процесс обычно занимает около пяти минут. Теперь нужно поправить конфигурацию базы данных для проекта. Узнаем параметры подключения к БД в панели управления хостингом. Заходим в «Услуги — Проекты», нажимаем «Подробнее» на проекте redmine, далее в графе «Ресурсы» нажимаем на ссылку с базой данных.
Возвращаемся в терминал. Копируем файл конфигурации БД из поставки Redmine
$ cp config/database.yml.example config/database.yml
Редактируем файл с настройками, вписываем параметры подключения нашей базы
Обратите внимание на адаптер базы, для Ruby 1.9 это должен быть mysql2. Вторая частая ошибка — имя хоста. Обязательно внесите хост со страницы с параметрами подключения БД.
Сохраняем изменения: Ctrl+O, Ctrl+X.
Выполняем настройку проекта
Следуем инструкции по установке, выполняем таски, необходимые для запуска проекта. Особенность хостинга — все команды нужно оборачивать в rvm и bundle.
$ rvm use 1.9.3 do bundle exec rake generate_secret_token $ RAILS_ENV=production rvm use 1.9.3 do bundle exec rake db:migrate
В нашем примере мы загрузим тестовые данные в проект
$ RAILS_ENV=production rvm use 1.9.3 do bundle exec rake redmine:load_default_data
Правим права доступа к каталогам
$ chmod -R 755 files log tmp
Перезапускаем сервер приложений
Установка практически завершена. Все, что осталось сделать, это перезапустить сервер приложений, обслуживающий наш проект. Из терминала выполняем команды:
$ kill -QUIT `cat /var/run/unicorn/hosting_redmine/redmine.redmine5.pid` $ rvm use 1.9.3 do bundle exec unicorn_rails -Dc /etc/unicorn/redmine.redmine5.rb
Проверяем, что сервер приложений запустился и проект работает. В панели управления идем в «Услуги — Проекты», напротив проекта redmine нажимаем на ссылку с его доменом. Авторизуемся учетной записью по умолчанию admin/admin.
Можно приступать к настройке непосредственно самого Redmine.
Если что-то пошло не так, полезную информацию можно найти в логах в каталоге проекта ~/projects/current/log
- production.log — основной журнал Redmine. Ошибки уровня приложения пишутся сюда.
- unicorn.stderr.log — журнал ошибок запуска Unicorn. Недостающие библиотеки и проблемы запуска сервера приложений запишутся сюда.